package org.zch.controller;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.zch.common.ApiResult;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.zch.entity.po.VersionsPO;
import org.zch.service.VersionsService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 版本(Versions)表控制层
 *
 * @author 刘新
 * @since 2024-01-16 16:08:35
 */
@RestController
@RequestMapping("versions")
public class VersionsController {
    /**
     * 服务对象
     */
    @Resource
    private VersionsService versionsService;

    /**
     * 分页查询所有数据
     *
     * @param page     分页对象
     * @param versionsPO 查询实体
     * @return 所有数据
     */
    @PostMapping("/getPage")
    public ApiResult selectAll(Page<VersionsPO> page, VersionsPO versionsPO) {
        return ApiResult.ok(this.versionsService.page(page, new QueryWrapper<>(versionsPO)));
    }

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @GetMapping("/getById/{id}")
    public ApiResult selectOne(@PathVariable Serializable id) {
        return ApiResult.ok(this.versionsService.getById(id));
    }

    /**
     *查询当前最新的数据
     */
    @GetMapping("/getVersion")
    public ApiResult getVersion() {
        return ApiResult.ok(this.versionsService.getVersion());
    }

    /**
     * 新增数据
     *
     * @param versionsPO 实体对象
     * @return 新增结果
     */
    @PostMapping("/insert")
    public ApiResult insert(@RequestBody VersionsPO versionsPO) {
        versionsPO.setUpdateTime(new Date());
        return ApiResult.ok(this.versionsService.save(versionsPO));
    }

    /**
     * 修改数据
     *
     * @param versionsPO 实体对象
     * @return 修改结果
     */
    @PutMapping("/update")
    public ApiResult update(@RequestBody VersionsPO versionsPO) {
        return ApiResult.ok(this.versionsService.updateById(versionsPO));
    }

    /**
     * 删除数据
     *
     * @param idList 主键结合
     * @return 删除结果
     */
    @DeleteMapping("/deleteByIds")
    public ApiResult delete(@RequestParam("idList") List<Long> idList) {
        return ApiResult.ok(this.versionsService.removeByIds(idList));
    }
}

